package com.caixin.common.response;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 公共返回对象
 *
 * @author Administrator
 * @version 1.0.0
 * @createTime 2021年12月04日 17:36
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApiResult {

    /**
     * code值
     */
    private Integer code;
    /**
     * 信息
     */
    private String message;
    /**
     * 对象
     */
    private Object data;

    /**
     * 成功
     *
     * @return com.domain.common.result.ResultAip
     * @date 2021年12月07日 11:32
     */
    public static ApiResult success() {
        return new ApiResult(CommonResultEnum.SUCCESS.getCode(), CommonResultEnum.SUCCESS.getMessage(), null);
    }

    /**
     * 成功
     *
     * @return com.domain.common.result.ResultAip
     * @date 2021年12月07日 11:32
     */
    public static ApiResult success(Object obj) {
        return new ApiResult(CommonResultEnum.SUCCESS.getCode(), CommonResultEnum.SUCCESS.getMessage(),obj);
    }
    /**
     * 成功
     *
     * @param enumType: 枚举
     * @param obj:      T
     * @return com.domain.common.result.ResultAip
     * @date 2021年12月07日 11:34
     */
    public static ApiResult success(CommonResultEnum enumType, Object obj) {
        return new ApiResult(enumType.getCode(), enumType.getMessage(), obj);
    }

    /**
     * 失败
     *
     * @return com.domain.common.result.ResultAip
     * @date 2021年12月07日 11:31
     */
    public static ApiResult fail() {
        return new ApiResult(CommonResultEnum.FAIL.getCode(), CommonResultEnum.FAIL.getMessage(), null);
    }

    /**
     * 失败
     *
     * @param enumType: 枚举
     * @param obj:      T
     * @return com.domain.common.result.ResultAip
     * @date 2021年12月07日 11:31
     */
    public static ApiResult fail(CommonResultEnum enumType, Object obj) {
        return new ApiResult(enumType.getCode(), enumType.getMessage(), obj);
    }

    /**
     * 失败
     *
     * @param code:
     * @param message:
     * @return com.domain.common.response.ApiResult
     * @date 2021年12月07日 17:27
     */
    public static ApiResult fail(Integer code, String message) {
        return new ApiResult(code, message, null);
    }

}
